package com.wcq.studentbackend.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wcq.studentbackend.dto.GradeDTO;
import com.wcq.studentbackend.dto.GradeRequestDTO;
import com.wcq.studentbackend.dto.GradeStatsResponseDTO;
import com.wcq.studentbackend.entity.Grade;

import java.util.List;

public interface GradeService extends IService<Grade> {

    List<GradeDTO> getAllGradesWithDetails(); // 获取所有成绩，包含详细信息

    GradeDTO getGradeWithDetailsById(Long id); // 根据ID获取单个成绩的详细信息

    GradeDTO createGrade(GradeRequestDTO gradeRequestDTO);

    GradeDTO updateGrade(Long id, GradeRequestDTO gradeRequestDTO);

    boolean deleteGrade(Long id);

    List<GradeDTO> searchGrades(Long examId, Long classId, String studentName);

    // 可根据需要添加带筛选条件的查询方法
    // List<GradeDTO> getFilteredGrades(Long examId, Integer classId, String studentName);

    GradeStatsResponseDTO getStudentGradeStats(Long studentId);

    /**
     * 根据学号获取该学生的所有成绩信息
     * @param stuNo 学号
     * @return 成绩DTO列表
     */
    List<GradeDTO> getGradesByStudentStuNo(String stuNo);

    // 未来可能需要的其他方法，例如：
    // boolean addGrade(GradeDTO gradeDto);
    // boolean updateGrade(GradeDTO gradeDto);
    // boolean deleteGrade(Integer gradeId);
    // Page<GradeDTO> getGradesByPage(Page<GradeDTO> page, GradeQueryCriteria criteria); // 分页和条件查询
} 